/**
 * @param {date} time 需要转换的时间
 * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
 * @returns {String}
 */
export const formatTime = (
  time: string | number | Date,
  fmt: string
): string => {
  if (!time) return "";
  const date = new Date(time);
  const o = {
    "M+": date.getMonth() + 1,
    "d+": date.getDate(),
    "H+": date.getHours(),
    "m+": date.getMinutes(),
    "s+": date.getSeconds(),
    "q+": Math.floor((date.getMonth() + 3) / 3),
    S: date.getMilliseconds(),
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (const k in o) {
    if (new RegExp("(" + k + ")").test(fmt)) {
      fmt = fmt.replace(
        RegExp.$1,
        // @ts-ignore: Unreachable code error
        RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
    }
  }
  return fmt;
};

export const isMoreThan3DaysFunction = (timestamp1, timestamp2) => {
  const oneDay = 24 * 60 * 60 * 1000; // 1天的毫秒数
  const diff = Math.abs(timestamp1 - timestamp2); // 计算差值的绝对值
  return diff > 3 * oneDay; // 如果差值大于3天，返回true
};

export const setLargeItem = (key, value, chunkSize = 1000) => {
  console.log("setLargeItem value ==>", value);
  let chunks = [];
  let stringValue = JSON.stringify(value);
  for (let i = 0; i < stringValue.length; i += chunkSize) {
    chunks.push(stringValue.substring(i, i + chunkSize));
  }
  localStorage.setItem(key + "_chunks", JSON.stringify(chunks.length));
  chunks.forEach((chunk, index) => {
    localStorage.setItem(key + "_chunk_" + index, chunk);
  });
};

export const getLargeItem = (key) => {
  let chunksCount = JSON.parse(localStorage.getItem(key + "_chunks"));
  let chunks = [];
  for (let i = 0; i < chunksCount; i++) {
    chunks.push(localStorage.getItem(key + "_chunk_" + i));
  }
  return chunks.join("");
};
